import {
	getSharePoster
} from '@/js_sdk/QuShe-SharerPoster/QS-SharePoster/QS-SharePoster';

// 社区-帖子详情-有图
const drawCommunityImage = async (_this, posterCanvasId, codeUrl, imgUrl) => {

	return await getSharePoster({ //return Promise
		_this, //若在组件中使用 必传
		posterCanvasId, //canvasId
		backgroundImage: require(
			'@/pagesCommunity/static/community_info_img.png'
		), //背景图片路径, 画布会跟随图片的实际像素, 并绘制为背景, 请不要使背景图片的像素太大
		setCanvasWH({
			bgObj
		}) { //一般必传， 动态设置canvas宽高
			_this.poster = bgObj
		},
		drawArray({ //绘制序列
			bgObj, //背景图对象
			type, //自定义标识
			bgScale, //背景缩放
			setBgObj, //动态设置画布(宽高),若使用该方法不建议背景图方式绘制, 建议使用background自定义画布绘制, 因为这个方法绘制修改背景图的宽高
			getBgObj //获取动态设置的画布宽高
		}) {
			//return new Promise((rs, rj)=>{ rs([Obejct, ...]) })
			//或者
			//return [Obejct, ...]
			return [{
					type: 'text', // 绘制类型, 详见上方 绘制类型大纲
					//...对应type的属性, 详见下方
					text: _this.title_text,
					dx: 39,
					dy: 46,
					color: "#333",
					size: 16,
					lineFeed: { // 换行设置
						maxWidth: 254, //设置单行最大宽度 默认画布宽度
						lineNum: 1, // 最多5行
						lineHeight: 17, //行高
					}
				},
				{ // 宠物图片
					type: 'image',
					url: imgUrl,
					dx: 39,
					dy: 72,
					dWidth: 270,
					dHeight: 200,
				},
				// 帖子正文
				{
					type: 'text', // 绘制类型, 详见上方 绘制类型大纲
					//...对应type的属性, 详见下方
					text: _this.info.content,
					dx: 39,
					dy: 285,
					color: "#666",
					size: 12,
					lineFeed: { // 换行设置
						maxWidth: 270, //设置单行最大宽度 默认画布宽度
						lineNum: 5, // 最多5行
						lineHeight: 17, //行高
					}
				},
				// 小程序码图片
				{
					type: 'image',
					url: codeUrl,
					dx: 35,
					dy: 387,
					dWidth: 55,
					dHeight: 56,
				},
				{
					type: 'text',
					text: '长按识别小程序码查看详情',
					dx: 101,
					dy: 400,
					color: "#333",
					size: 14
				},
				{
					type: 'text',
					text: '来自救助圈领养平台',
					dx: 101,
					dy: 425,
					color: "#666",
					size: 10
				},
			]
		}

	})
}

// 社区-帖子详情-无图
const drawCommunityNoImage = async (_this, posterCanvasId, codeUrl) => {

	return await getSharePoster({ //return Promise
		_this: _this, //若在组件中使用 必传
		posterCanvasId, //canvasId
		backgroundImage: require(
			'@/pagesCommunity/static/community_info.png'), //背景图片路径, 画布会跟随图片的实际像素, 并绘制为背景, 请不要使背景图片的像素太大
		setCanvasWH({
			bgObj
		}) { //一般必传， 动态设置canvas宽高
			_this.poster = bgObj
		},
		drawArray({ //绘制序列
			bgObj, //背景图对象
			type, //自定义标识
			bgScale, //背景缩放
			setBgObj, //动态设置画布(宽高),若使用该方法不建议背景图方式绘制, 建议使用background自定义画布绘制, 因为这个方法绘制修改背景图的宽高
			getBgObj //获取动态设置的画布宽高
		}) {
			//return new Promise((rs, rj)=>{ rs([Obejct, ...]) })
			//或者
			//return [Obejct, ...]
			return [{
					type: 'text', // 绘制类型, 详见上方 绘制类型大纲
					//...对应type的属性, 详见下方
					text: _this.title_text,
					dx: 39,
					dy: 42,
					color: "#333",
					size: 16
				},
				// 帖子正文
				{
					type: 'text', // 绘制类型, 详见上方 绘制类型大纲
					//...对应type的属性, 详见下方
					text: _this.info.content,
					dx: 39,
					dy: 74,
					color: "#666",
					size: 12,
					lineFeed: { // 换行设置
						maxWidth: 270, //设置单行最大宽度 默认画布宽度
						lineNum: 5, // 最多5行
						lineHeight: 17, //行高
					}
				},
				{
					type: 'image',
					url: codeUrl,
					dx: 35,
					dy: 176,
					dWidth: 55,
					dHeight: 56,
				},
				{
					type: 'text',
					text: '长按识别小程序码查看详情',
					dx: 101,
					dy: 186,
					color: "#333",
					size: 14
				},
				{
					type: 'text',
					text: '来自救助圈领养平台',
					dx: 101,
					dy: 208,
					color: "#666",
					size: 10
				},
			]
		}

	})
}


// 寻宠寻主-寻主详情-海报
const drawFindMaster = async (_this, posterCanvasId, codeUrl, imgUrl) => {
	return await getSharePoster({ //return Promise
		_this: _this, //若在组件中使用 必传
		posterCanvasId, //canvasId
		backgroundImage: require(
			'@/pagesIndex/static/find_master.png'), //背景图片路径, 画布会跟随图片的实际像素, 并绘制为背景, 请不要使背景图片的像素太大
		setCanvasWH({
			bgObj
		}) { //一般必传， 动态设置canvas宽高
			_this.poster = bgObj
		},
		drawArray({ //绘制序列
			bgObj, //背景图对象
			type, //自定义标识
			bgScale, //背景缩放
			setBgObj, //动态设置画布(宽高),若使用该方法不建议背景图方式绘制, 建议使用background自定义画布绘制, 因为这个方法绘制修改背景图的宽高
			getBgObj //获取动态设置的画布宽高
		}) {
			//return new Promise((rs, rj)=>{ rs([Obejct, ...]) })
			//或者
			//return [Obejct, ...]
			return [{
					type: 'image',
					url: imgUrl,
					dx: 39,
					dy: 50,
					dWidth: 270,
					dHeight: 190,
				},


				// 标题
				{
					type: 'text',
					text: _this.info.title,
					dx: 190,
					dy: 269,
					color: "#333",
					size: 12,
					lineFeed: { // 换行设置
						maxWidth: 115, //设置单行最大宽度 默认画布宽度
						lineNum: 1, // 最多5行
						lineHeight: 17, //行高
					}
				},

				// 拾得时间
				{
					type: 'text',
					text: _this.info.pick_time,
					dx: 214,
					dy: 295,
					color: "#333",
					size: 12,
				},

				// 拾得地点
				{
					type: 'text',
					text: _this.info.city + _this.info.district,
					dx: 214,
					dy: 321,
					color: "#333",
					size: 12,
				},
				{
					type: 'text', // 绘制类型, 详见上方 绘制类型大纲
					//...对应type的属性, 详见下方
					text: _this.info.detail,
					dx: 160,
					dy: 380,
					color: "#000",
					size: 12,
					lineFeed: { // 换行设置
						maxWidth: 173, //设置单行最大宽度 默认画布宽度
						lineNum: 7, // 最多5行
						lineHeight: 17, //行高
					}
				},
				{
					type: 'image',
					url: codeUrl,
					dx: 55,
					dy: 440,
					dWidth: 42,
					dHeight: 42,
				},
			]
		}

	})

}

// 寻宠寻主-寻宠详情-海报
const drawFindPet = async (_this, posterCanvasId, codeUrl, imgUrl) => {

	return await getSharePoster({ //return Promise
		_this: _this, //若在组件中使用 必传
		posterCanvasId, //canvasId
		backgroundImage: require(
			'@/pagesIndex/static/find_pet.png'), //背景图片路径, 画布会跟随图片的实际像素, 并绘制为背景, 请不要使背景图片的像素太大
		setCanvasWH({
			bgObj
		}) { //一般必传， 动态设置canvas宽高
			_this.poster = bgObj
		},
		drawArray({ //绘制序列
			bgObj, //背景图对象
			type, //自定义标识
			bgScale, //背景缩放
			setBgObj, //动态设置画布(宽高),若使用该方法不建议背景图方式绘制, 建议使用background自定义画布绘制, 因为这个方法绘制修改背景图的宽高
			getBgObj //获取动态设置的画布宽高
		}) {
			//return new Promise((rs, rj)=>{ rs([Obejct, ...]) })
			//或者
			//return [Obejct, ...]
			return [{
					type: 'image',
					url: imgUrl,
					dx: 39,
					dy: 50,
					dWidth: 270,
					dHeight: 190,
				},


				// 姓名
				{
					type: 'text',
					text: _this.info.pet_nickname,
					dx: 194,
					dy: 268,
					color: "#333",
					size: 12,
					lineFeed: { // 换行设置
						maxWidth: 40, //设置单行最大宽度 默认画布宽度
						lineNum: 1, // 最多5行
						lineHeight: 17, //行高
					}
				},
				// 性别
				{
					type: 'text',
					text: _this.info.sex,
					dx: 287,
					dy: 268,
					color: "#333",
					size: 12,
				},

				// 丢失时间

				{
					type: 'text',
					text: _this.info.lost_time,
					dx: 216,
					dy: 294,
					color: "#333",
					size: 12,
				},

				// 丢失地点

				{
					type: 'text',
					text: _this.info.city + _this.info.district,
					dx: 216,
					dy: 320,
					color: "#333",
					size: 12,
					lineFeed: { // 换行设置
						maxWidth: 100, //设置单行最大宽度 默认画布宽度
						lineNum: 1, // 最多5行
						lineHeight: 17, //行高
					}
				},
				{
					type: 'text', // 绘制类型, 详见上方 绘制类型大纲
					//...对应type的属性, 详见下方
					text: _this.info.detail,
					dx: 158,
					dy: 380,
					color: "#000",
					size: 12,
					lineFeed: { // 换行设置
						maxWidth: 154, //设置单行最大宽度 默认画布宽度
						lineNum: 6, // 最多5行
						lineHeight: 17, //行高
					}
				},
				{
					type: 'image',
					url: codeUrl,
					dx: 58,
					dy: 442,
					dWidth: 42,
					dHeight: 42,
				},
			]
		}

	})
}

// 领养详情-海报一
const drawGetInfo1 = async (_this, posterCanvasId, codeUrl, imgUrl) => {

	return await getSharePoster({ //return Promise
		_this: _this, //若在组件中使用 必传
		posterCanvasId, //canvasId
		backgroundImage: require(
			'@/pagesIndex/static/index_info1.png'), //背景图片路径, 画布会跟随图片的实际像素, 并绘制为背景, 请不要使背景图片的像素太大
		setCanvasWH({
			bgObj
		}) { //一般必传， 动态设置canvas宽高
			_this.poster1 = bgObj
		},
		drawArray({ //绘制序列
			bgObj, //背景图对象
			type, //自定义标识
			bgScale, //背景缩放
			setBgObj, //动态设置画布(宽高),若使用该方法不建议背景图方式绘制, 建议使用background自定义画布绘制, 因为这个方法绘制修改背景图的宽高
			getBgObj //获取动态设置的画布宽高
		}) {
			//return new Promise((rs, rj)=>{ rs([Obejct, ...]) })
			//或者
			//return [Obejct, ...]
			return [{
					type: 'image',
					url: imgUrl,
					dx: 35,
					dy: 55,
					dWidth: 270,
					dHeight: 203,
				},

				// 姓名
				{
					type: 'text',
					text: _this.info.pet_nickname,
					dx: 56,
					dy: 282,
					color: "#000",
					size: 10,
					lineFeed: { // 换行设置
						maxWidth: 70, //设置单行最大宽度 默认画布宽度
						lineNum: 1, // 最多1行
						lineHeight: 17, //行高
					}
				},
				// 年龄

				{
					type: 'text',
					text: _this.info.age,
					dx: 162,
					dy: 282,
					color: "#000",
					size: 10,
					lineFeed: { // 换行设置
						maxWidth: 70, //设置单行最大宽度 默认画布宽度
						lineNum: 1, // 最多1行
						lineHeight: 17, //行高
					}
				},
				// 性别

				{
					type: 'text',
					text: _this.info.sex,
					dx: 263,
					dy: 282,
					color: "#000",
					size: 10,
					lineFeed: { // 换行设置
						maxWidth: 50, //设置单行最大宽度 默认画布宽度
						lineNum: 1, // 最多1行
						lineHeight: 17, //行高
					}
				},


				// 疫苗

				{
					type: 'text',
					text: _this.info.vaccine,
					dx: 56,
					dy: 311,
					color: "#000",
					size: 10,
				},
				// 绝育

				{
					type: 'text',
					text: _this.info.sterilize,
					dx: 162,
					dy: 311,
					color: "#000",
					size: 10,
				},
				// 驱虫

				{
					type: 'text',
					text: _this.info.expelling_parasite,
					dx: 263,
					dy: 311,
					color: "#000",
					size: 10,
				},

				{
					type: 'text',
					text: _this.info.story,
					dx: 163,
					dy: 370,
					color: "#000",
					size: 12,
					lineFeed: { // 换行设置
						maxWidth: 155, //设置单行最大宽度 默认画布宽度
						lineNum: 5, // 最多1行
						lineHeight: 17, //行高
					}
				},
				{
					type: 'image',
					url: codeUrl,
					dx: 265,
					dy: 466,
					dWidth: 50,
					dHeight: 50,
				},
			]
		}
	})
}

// 领养详情-海报二
const drawGetInfo2 = async (_this, posterCanvasId, codeUrl, imgUrl) => {

	return await getSharePoster({ //return Promise
		_this: _this, //若在组件中使用 必传
		posterCanvasId, //canvasId
		backgroundImage: require(
			'@/pagesIndex/static/index_info2.png'), //背景图片路径, 画布会跟随图片的实际像素, 并绘制为背景, 请不要使背景图片的像素太大
		setCanvasWH({
			bgObj
		}) { //一般必传， 动态设置canvas宽高
			_this.poster2 = bgObj
		},
		drawArray({ //绘制序列
			bgObj, //背景图对象
			type, //自定义标识
			bgScale, //背景缩放
			setBgObj, //动态设置画布(宽高),若使用该方法不建议背景图方式绘制, 建议使用background自定义画布绘制, 因为这个方法绘制修改背景图的宽高
			getBgObj //获取动态设置的画布宽高
		}) {
			//return new Promise((rs, rj)=>{ rs([Obejct, ...]) })
			//或者
			//return [Obejct, ...]
			return [{
					type: 'image',
					url: imgUrl,
					dx: 64,
					dy: 37,
					dWidth: 220,
					dHeight: 220,
					circleSet: true,
				},

				// 姓名
				{
					type: 'text',
					text: _this.info.pet_nickname,
					dx: 147,
					dy: 325,
					color: "#000",
					size: 12,
					lineFeed: { // 换行设置
						maxWidth: 70, //设置单行最大宽度 默认画布宽度
						lineNum: 1, // 最多1行
						lineHeight: 17, //行高
					}
				},
				// 年龄

				{
					type: 'text',
					text: _this.info.age,
					dx: 147,
					dy: 347,
					color: "#000",
					size: 12,
					lineFeed: { // 换行设置
						maxWidth: 70, //设置单行最大宽度 默认画布宽度
						lineNum: 1, // 最多1行
						lineHeight: 17, //行高
					}
				},
				// 性别

				{
					type: 'text',
					text: _this.info.sex,
					dx: 147,
					dy: 369,
					color: "#000",
					size: 12,
					lineFeed: { // 换行设置
						maxWidth: 50, //设置单行最大宽度 默认画布宽度
						lineNum: 1, // 最多1行
						lineHeight: 17, //行高
					}
				},


				// 疫苗

				{
					type: 'text',
					text: _this.info.vaccine,
					dx: 263,
					dy: 325,
					color: "#000",
					size: 10,
				},
				// 绝育

				{
					type: 'text',
					text: _this.info.sterilize,
					dx: 263,
					dy: 347,
					color: "#000",
					size: 10,
				},
				// 驱虫

				{
					type: 'text',
					text: _this.info.expelling_parasite,
					dx: 263,
					dy: 369,
					color: "#000",
					size: 10,
				},

				{
					type: 'text',
					text: _this.info.story,
					dx: 120,
					dy: 435,
					color: "#000",
					size: 12,
					lineFeed: { // 换行设置
						maxWidth: 198, //设置单行最大宽度 默认画布宽度
						lineNum: 3, // 最多1行
						lineHeight: 17, //行高
					}
				},


				{
					type: 'image',
					url: codeUrl,
					dx: 274,
					dy: 257,
					dWidth: 50,
					dHeight: 50,
				},
			]
		}
	})
}



//保存到相册
const saveImg = (_this, filePath) => {
	uni.saveImageToPhotosAlbum({
		filePath,
		success: (res) => {
			uni.showToast({
				title: '已保存到相册',
				icon: 'success',
			})
			_this.showPosterModal = false;
		}
	})
}
// canvas 转 图片
const saveCanvas = (_this, canvasId) => {
	uni.canvasToTempFilePath({
		canvasId,
		success: (res) => {
			const tempFilePath = res.tempFilePath;
			saveImg(_this, tempFilePath);
		}
	});
}


export default {
	saveImg,
	saveCanvas,
	drawCommunityImage,
	drawCommunityNoImage,
	drawFindPet,
	drawFindMaster,
	drawGetInfo1,
	drawGetInfo2
}
